//
// Created by Zhangwj on 2023/9/27.
//

#include "LOrExpNode.h"

std::unique_ptr<LOrExpNode> LOrExpNode::LOrExpParser(Parser &parser) {
    // LOrExp → LAndExp | LOrExp '||' LAndExp
    //改写为 LOrExp -> LAndExp { '||' LAndExp }
    std::unique_ptr<LOrExpNode> lOrExpNode = std::make_unique<LOrExpNode>();
    lOrExpNode->LAndExps.push_back(LAndExpNode::LAndExpParser(parser));
    while (parser.getLexType(0) == LexType::OR) {
        parser.next();
        lOrExpNode->LAndExps.push_back(LAndExpNode::LAndExpParser(parser));
    }
    return lOrExpNode;
}
